package com.imut.lagain.entity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;

import java.time.LocalDateTime;

/**
 * 心情小偷实体类
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("mood_thief")
public class MoodThief {
    private static final Logger log = LoggerFactory.getLogger(MoodThief.class);

    
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    
    /**
     * 小偷类型
     */
    @NotBlank(message = "小偷类型不能为空")
    @Size(max = 50, message = "小偷类型长度不能超过50个字符")
    @TableField("thief_type")
    private String thiefType;
    
    /**
     * 显示名称
     */
    @NotBlank(message = "显示名称不能为空")
    @Size(max = 100, message = "显示名称长度不能超过100个字符")
    @TableField("display_name")
    private String displayName;
    
    /**
     * 角色图片URL
     */
    @Size(max = 500, message = "角色图片URL长度不能超过500个字符")
    @TableField("image_url")
    private String imageUrl;
    
    /**
     * 偷取成功率
     */
    @TableField("success_rate")
    private Float successRate = 0.5f;
    
    /**
     * 逃脱率
     */
    @TableField("escape_rate")
    private Float escapeRate = 0.3f;
    
    /**
     * 角色描述
     */
    @Size(max = 500, message = "角色描述长度不能超过500个字符")
    @TableField("description")
    private String description;
    
    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    
    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    
    /**
     * 是否删除(1-已删除, 0-未删除)
     */
    @TableLogic
    @TableField("is_deleted")
    private Boolean isDeleted = false;
    public Long getId() {
        return id;
    }
    
    public void setId(Long id) {
        this.id = id;
    }
    
    public String getThiefType() {
        return thiefType;
    }
    
    public void setThiefType(String thiefType) {
        this.thiefType = thiefType;
    }
    
    public String getDisplayName() {
        return displayName;
    }
    
    public void setDisplayName(String displayName) {
        this.displayName = displayName;
    }
    
    public String getImageUrl() {
        return imageUrl;
    }
    
    public void setImageUrl(String imageUrl) {
        this.imageUrl = imageUrl;
    }
    
    public Float getSuccessRate() {
        return successRate;
    }
    
    public void setSuccessRate(Float successRate) {
        this.successRate = successRate;
    }
    
    public Float getEscapeRate() {
        return escapeRate;
    }
    
    public void setEscapeRate(Float escapeRate) {
        this.escapeRate = escapeRate;
    }
    
    public String getDescription() {
        return description;
    }
    
    public void setDescription(String description) {
        this.description = description;
    }
    
    public LocalDateTime getCreateTime() {
        return createTime;
    }
    
    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime;
    }
    
    public LocalDateTime getUpdateTime() {
        return updateTime;
    }
    
    public void setUpdateTime(LocalDateTime updateTime) {
        this.updateTime = updateTime;
    }
    
    public Boolean getIsDeleted() {
        return isDeleted;
    }
    
    public void setIsDeleted(Boolean isDeleted) {
        this.isDeleted = isDeleted;
    }
}
